home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 September / Chip_2004-09_cd1.bin / program / delphi / download / nastroje / 97.mpth_10[1].exe / {app} / scripts / Checksums.mps next >
Text File  |  2003-10-17  |  2KB  |  83 lines

  1. include 'def.mps'
  2.  
  3. = create crc16, crc32 and md5 checksum of the current file
  4.  
  5. = ensure a current file is available
  6. if currentfile==''
  7.   !cmd.fileopen
  8.   if currentfile==''
  9.     end
  10.   endif
  11. endif
  12.  
  13. = create a temporary filename
  14.  
  15. var ftemp text dw dword
  16. repeat
  17.   dw = random(0xffffffff)+1
  18.   ftemp = envparse('%temp%\mpth_s'+text(dw))
  19. until not fileexists(ftemp)
  20.  
  21. = copy the current data to the temporary file 
  22.  
  23. var fin file fout file
  24. fout=fileopen(ftemp,'c')
  25. fin=fileopen('::current', 'r')
  26.  
  27. = check if a selection is available
  28.  
  29. var dosave byte
  30. dosave = 1
  31.  
  32. if filegetprop(fin, 'selcount') != 0
  33.   var mb dword
  34.   mb = msgbox('Use only the selected data for checksum calculation?', MB_ICONQUESTION or MB_YESNOCANCEL)
  35.   if mb == IDCANCEL: end:endif
  36.   if mb == IDYES
  37.     fileclose fout
  38.     !cmd.filesaveselection ftemp
  39.     dosave = 0
  40.   endif
  41. endif
  42.  
  43.  
  44. if dosave
  45.   var data text read dword
  46.   repeat
  47.     read=fileread(fin, @data, 65536)
  48.     if read > 0
  49.       data = textcopy(data, 1, read)
  50.       filewrite fout data
  51.     endif
  52.   until read == 0
  53.  
  54.   fileclose fout
  55. endif
  56.  
  57. fileclose fin
  58.  
  59. = execute the three programs
  60. var crc16 text crc32 text md5 text msg text
  61.  
  62. read = shell(envparse('%apppath%\utils\crc1632.exe'), ('/m16 "/f'+ftemp+'"'), 0, '', @crc16)
  63. if read == 0
  64.   concat msg ("CRC16 checksum:\r\n  "+textchop(textupper(crc16))+"\r\n\r\n")
  65. endif
  66.  
  67. read = shell(envparse('%apppath%\utils\crc1632.exe'), ('/m32 "/f'+ftemp+'"'), 0, '', @crc32)
  68. if read == 0
  69.   concat msg ("CRC32 checksum:\r\n  "+textchop(textupper(crc32))+"\r\n\r\n")
  70. endif
  71.  
  72. read = shell(envparse('%apppath%\utils\md5.exe'), ('"'+ftemp+'"'), 0, '', @md5)
  73. if read == 0
  74.   read = textpos(' ', md5)
  75.   md5 = textcopy(md5, 1, read-1)
  76.   concat msg ("MD5 digest:\r\n  "+textchop(textupper(md5))+"\r\n\r\n")
  77. endif
  78.  
  79. filedelete ftemp
  80.  
  81. textbox msg, 'Checksums'
  82.  
  83.